drm/vmwgfx: Fix stale file descriptors on failed usercopy
authorMathias Krause <minipli@grsecurity.net>
Thu, 27 Jan 2022 08:34:19 +0000 (18:34 +1000)
committerSalvatore Bonaccorso <carnil@debian.org>
Sun, 30 Jan 2022 10:14:49 +0000 (10:14 +0000)
commit10733d106987192a468d6ccd4e9399ef9691c97d
tree06ece307d6d8dc592ac175a1af7949ac082ba1c8
parent7cda34ca518bf12252563e83a9c53ca2f4bdc015
drm/vmwgfx: Fix stale file descriptors on failed usercopy

Origin: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit?id=6066977961fc6f437bc064f628cf9b0e4571c56c
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2022-22942

commit a0f90c8815706981c483a652a6aefca51a5e191c upstream.

A failing usercopy of the fence_rep object will lead to a stale entry in
the file descriptor table as put_unused_fd() won't release it. This
enables userland to refer to a dangling 'file' object through that still
valid file descriptor, leading to all kinds of use-after-free
exploitation scenarios.

Fix this by deferring the call to fd_install() until after the usercopy
has succeeded.

Fixes: c906965dee22 ("drm/vmwgfx: Add export fence to file descriptor support")
Signed-off-by: Mathias Krause <minipli@grsecurity.net>
Signed-off-by: Zack Rusin <zackr@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name drm-vmwgfx-Fix-stale-file-descriptors-on-failed-user.patch
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c